package solutions.ferpa.ztest.intf;

import br.com.telescope.adsrt.dom.DomFlag;
import br.com.telescope.adsrt.dom.DomId;
import br.com.telescope.adsrt.dom.DomText;
import br.com.telescope.adsrt.dom.DomTextLong;
import br.com.telescope.adsrt.dom.DomUpper;
import br.com.telescope.t2.ServiceModel;
import br.com.telescope.t2.feature.DeleteFeature;
import br.com.telescope.t2.feature.InsertFeature;
import br.com.telescope.t2.feature.ListFeature;
import br.com.telescope.t2.feature.UpdateFeature;
import br.com.telescope.t2.feature.ViewFeature;
import solutions.ferpa.ztest.ent.*;

/**
 * Tipos de instrumentos para ensaio.
 * <p>
 * Interface para manutenção de Tipos do instrumento de ensaio
 * <P>
 * Telescope origin: ZTEST.CAD_TIPO_INSTRUMENTO_ENSAIO
 * <P>
 * Base entity: ZTEST.TIPO_INSTRUMENTO_ENSAIO
 * <P>
 * @author TELESCOPE - Build task T2 Web Interface Generator
 * <P>
 * @version 0.1
 */
public class CadTipoInstrumentoEnsaio extends ServiceModel {
    
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    public static final String GLOBAL_NAME = "ZTEST.CAD_TIPO_INSTRUMENTO_ENSAIO";
    
    @Override
    public String globalName() {
        return GLOBAL_NAME;
    }
    
    {
        setTitle("Tipos de instrumentos para ensaio");
    }
    
    protected EntTipoInstrumentoEnsaio base;
    protected EntTipoInstrumentoEnsaio rec; // NEED_TJW1_COMPATIBILITY
    
    // Record items
    private DomUpper aNome;
    private DomFlag aEComponente;
    private DomFlag aOfereceDadosLeitura;
    private DomText aMascaraValorColetado;
    private DomFlag aExigeCertificadoCalibracao;
    private DomTextLong aDescricao;
    private DomId aId;
    
    // Query items
    
    @Override
    public String getBaseSql() {
        return "select BASE.*"
                + " from TIPO_INSTRUMENTO_ENSAIO BASE";
    }
    
    @Override
    public void initAttributes() {
        
        aNome = new DomUpper();
        aNome.context(ctx).name("NOME").label("Tipo do instrumento");
        
        aEComponente = new DomFlag();
        aEComponente.context(ctx).name("E_COMPONENTE").label("É um componente/dispositivo?");
        
        aOfereceDadosLeitura = new DomFlag();
        aOfereceDadosLeitura.context(ctx).name("OFERECE_DADOS_LEITURA").label("Oferece dados para ensaio");
        aOfereceDadosLeitura.addOption("N", "Não disponibiliza");
        aOfereceDadosLeitura.addOption("I", "Intervalo de valores");
        aOfereceDadosLeitura.setDefaultValue("N");
        
        aMascaraValorColetado = new DomText();
        aMascaraValorColetado.context(ctx).name("MASCARA_VALOR_COLETADO").label("Máscara do valor coletado");
        aMascaraValorColetado.setListOfValuesQuery(createQuery()
                .select("*")
                .from("(select distinct "
                + "         MASCARA_VALOR_COLETADO as valor"
                + "        ,MASCARA_VALOR_COLETADO as descricao"
                + "        ,MASCARA_VALOR_COLETADO as pesquisar"
                + " from TIPO_INSTRUMENTO_ENSAIO"
                + " )", "q"));
        
        aExigeCertificadoCalibracao = new DomFlag();
        aExigeCertificadoCalibracao.context(ctx).name("EXIGE_CERTIFICADO_CALIBRACAO").label("Exige certificado de calibração");
        aExigeCertificadoCalibracao.setDefaultValue("N");
        
        aDescricao = new DomTextLong();
        aDescricao.context(ctx).name("DESCRICAO").label("Descrição do tipo de instrumento");
        
        aId = new DomId();
        aId.context(ctx).name("ID").label("Id");
        
    }
    
    @Override
    public String getQueryPkColumn() {
        return "BASE.ID";
    }
    
    @Override
    public void setId(String value) {
        this.aId.setValue(value);
    }
    
    @Override
    public EntTipoInstrumentoEnsaio getRecord() {
        if (base == null) {
            base = new EntTipoInstrumentoEnsaio(ctx);
            rec = base;
        }
        return this.base;
    }
    
    @Override
    public String getContextName() {
        return aNome.toText();
    }
    
    @Override
    public String getDefaultOrderBy() {
        return "NOME, E_COMPONENTE, OFERECE_DADOS_LEITURA, MASCARA_VALOR_COLETADO";
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="LIST">
    public class FList extends ListFeature {
        
        @Override
        public void initForm() {
            addField(aNome, "view");
            addField(aEComponente, "view");
            addField(aOfereceDadosLeitura, "view");
            addField(aMascaraValorColetado, "view");
            addField(aExigeCertificadoCalibracao, "view");
            addField(aDescricao, "view");
        }
        
        {
            setFeatureName("LIST");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="VIEW">
    public class FView extends ViewFeature {
        
        @Override
        public void initForm() {
            addField(aNome, "view");
            addField(aEComponente, "view");
            addField(aOfereceDadosLeitura, "view");
            addField(aMascaraValorColetado, "view");
            addField(aExigeCertificadoCalibracao, "view");
            addField(aDescricao, "view");
        }
        
        {
            setFeatureName("VIEW");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="INSERT">
    public class FInsert extends InsertFeature {
        
        @Override
        public void initForm() {
            aNome.setOptional(false);
            addField(aNome, "rqd");
            aEComponente.setOptional(false);
            addField(aEComponente, "rqd");
            aOfereceDadosLeitura.setOptional(false);
            addField(aOfereceDadosLeitura, "rqd");
            addField(aMascaraValorColetado, "opt");
            aExigeCertificadoCalibracao.setOptional(false);
            addField(aExigeCertificadoCalibracao, "rqd");
            aDescricao.setOptional(false);
            addField(aDescricao, "rqd");
        }
        
        {
            setFeatureName("INSERT");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="UPDATE">
    public class FUpdate extends UpdateFeature {
        
        @Override
        public void initForm() {
            aNome.setEditable(false);
            addField(aNome, "view");
            aEComponente.setOptional(false);
            addField(aEComponente, "rqd");
            aOfereceDadosLeitura.setOptional(false);
            addField(aOfereceDadosLeitura, "rqd");
            addField(aMascaraValorColetado, "opt");
            aExigeCertificadoCalibracao.setOptional(false);
            addField(aExigeCertificadoCalibracao, "rqd");
            addField(aDescricao, "opt");
        }
        
        {
            setFeatureName("UPDATE");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="DELETE">
    public class FDelete extends DeleteFeature {
        
        @Override
        public void initForm() {
            addField(aNome, "view");
            addField(aEComponente, "view");
            addField(aDescricao, "view");
        }
        
        {
            setFeatureName("DELETE");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="initFeatures">
    
    @Override
    protected void initFeatures() {
        addFeature(new FList());
        addFeature(new FView());
        addFeature(new FInsert());
        addFeature(new FUpdate());
        addFeature(new FDelete());
        super.initFeatures();
    }
    
    @Override
    public String getDefaultFeature() {
        return "LIST";
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Getters and Setters">
    
    public String getNome() {
        return aNome.getValue();
    }
    
    public void setNome(String value) {
        this.aNome.setValue(value);
    }
    
    public String getEComponente() {
        return aEComponente.getValue();
    }
    
    public void setEComponente(String value) {
        this.aEComponente.setValue(value);
    }
    
    public String getOfereceDadosLeitura() {
        return aOfereceDadosLeitura.getValue();
    }
    
    public void setOfereceDadosLeitura(String value) {
        this.aOfereceDadosLeitura.setValue(value);
    }
    
    public String getMascaraValorColetado() {
        return aMascaraValorColetado.getValue();
    }
    
    public void setMascaraValorColetado(String value) {
        this.aMascaraValorColetado.setValue(value);
    }
    
    public String getExigeCertificadoCalibracao() {
        return aExigeCertificadoCalibracao.getValue();
    }
    
    public void setExigeCertificadoCalibracao(String value) {
        this.aExigeCertificadoCalibracao.setValue(value);
    }
    
    public String getDescricao() {
        return aDescricao.getValue();
    }
    
    public void setDescricao(String value) {
        this.aDescricao.setValue(value);
    }
    
    @Override
    public Long getId() {
        return aId.getValue();
    }
    
    public void setId(Long value) {
        this.aId.setValue(value);
    }
    // </editor-fold>
    
}
